Many areas of computing involve hierarchically organized data sets, as well as techniques for display and navigation through such data sets. A hierarchically organized set of such data items, also known as nodes, may be organized with one or more items at the topmost level, known as root nodes. Each node may contain any number of subordinate items, known as child nodes, which may in turn contain any number of subordinate items, etc. A node may also contain no child nodes, therefore serving as a leaf node. This organizational structure provides for a hierarchy of containment, where each node except for the root node(s) is contained within one higher-level node (known as a parent node.)
Hierarchical data organization may be used in several contexts. As one example, data stored in a format complying with an Extensible Markup Language (XML) schema is organized hierarchically, such that the XML data set contains at most one root node, and each data item except for the root node is contained within exactly one higher-level XML data item. In this example, containment represents nesting, which leads to a fully nested, strictly hierarchical data set.
Hierarchical data sets are often displayed through a treeview graphical user control, in which the individual nodes may be opened or closed to show or hide (respectively) the child nodes contained therein. An exemplary treeview is illustrated in FIGS. 1A-1B, each presenting a treeview of the same hierarchical data set in two different view states. FIG. 1A depicts a hierarchical data set 10 containing a root node 12, labeled Node A, that solely comprises the topmost level of the hierarchy, and that directly or indirectly contains all of the other nodes. For instance, Node A 12 directly contains Node B 14, Node C 16, Node F 22, and Node K 32, which together comprise the second level of the hierarchy. Node C 16 further contains Node D 18 and Node E 20, while Node F 22 further contains Node G 24, Node H 26, and Node J 30, and where Node H 26 further contains Node I 28.
Treeview user controls may be used to display very large hierarchical data sets comprising millions of nodes, but displaying all of the nodes would be cumbersome for user navigation. The treeview therefore allows each node to be displayed in an open or closed state, where a node in an open state (denoted by a “−” sign) is shown with all of the child nodes, while a node in a closed state (denoted by a “+” sign) is shown with its child nodes hidden. The open or closed state of a node in the treeview may be toggled by the user (e.g., by clicking on the “+” or “−” symbol to the left of the node with a pointing device, such as a mouse.) The treeview 10 depicted in FIG. 1B illustrates the same data set as the treeview of FIG. 1A, but with Node C 16, Node H 26, Node J 30, and Node K 32 shown in a closed state (thereby hiding Nodes D and E contained within Node C 16, and Node I contained within Node H 26.) The hierarchical data set 10 illustrated by the treeview of FIG. 1B still contains Nodes D, E, and I, but these child nodes are hidden in the current state of the treeview 10, and may be shown again by opening the respective parent nodes.
The hierarchical organization of the data set enables the description of nodes according to the respective paths to be traversed to reach them. For instance, in FIG. 1A, Node H 26 may be described as the child node of Node F 22, which is in turn the child node of Node A 12. In reverse order, Node H 26 may be reached by traversing the hierarchical data set 10 illustrated in FIG. 1A by beginning at Node A 12, navigating (among the child nodes of Node A 12) to Node F 22, and navigating (among the child nodes of Node F 22) to Node H 26. This sequence forms a hierarchical path of Node A: Node F: Node H, which may be used to describe the organization of Node H 26 within the hierarchical data set 10.
When a user is navigating through a hierarchical data set, this sequence may also be presented as a breadcrumb list, e.g., as the hierarchical series of nodes through which the user has navigated to reach the current node. FIG. 1C illustrates the breadcrumb list for each node in the hierarchical data set of FIG. 1A. In the exemplary breadcrumb list 40 of FIG. 1C, when each node 42 of the hierarchical data set is selected, it is associated with a breadcrumb list 44 containing breadcrumbs 46 representing each location within the path from a root node of the hierarchical data set to the selected node. In the exemplary breadcrumb lists 44 of FIG. 1C, the breadcrumbs 46 are displayed in order from the root node to the selected node. The displayed breadcrumb lists 44 therefore display for the user the path taken through the hierarchical data set to reach the selected node. Moreover, in some implementations, the breadcrumbs 46 of the breadcrumb lists 44 may be activated (e.g., by clicking on a breadcrumb with a pointing device, such as a mouse) to travel to the node represented by the activated breadcrumb (e.g., by causing a treeview displaying the same hierarchical data set to jump to the node represented by the activated breadcrumb.)